perm filename CALPLT.SAI[SYS,HE] blob
sn#028816 filedate 1973-03-09 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 BEGIN "CALPLT"
00004 00003 BEGIN REAL ARRAY DAT[1:J,1:2]
00006 ENDMK
⊗;
BEGIN "CALPLT"
REQUIRE "PLOTS.REL[SYS,HE]" LOAD_MODULE;
FORTRAN PROCEDURE PLOTS(INTEGER I);
FORTRAN PROCEDURE PLOT(INTEGER X, Y, PEN);
FORTRAN PROCEDURE SYMBOL(INTEGER X, Y, SIZE, ANGLE, TEXT, N);
FORTRAN PROCEDURE WHERE(INTEGER X, Y);
INTERNAL INTEGER DOPLT;
INTEGER LTXTX, LTXTY, I, BRK, EOF, J, STRT, CNT;
INTEGER ARRAY T[0:10];
LABEL L1, L2;
STRING INP;
SIMPLE INTEGER PROCEDURE PACK(STRING A);
BEGIN INTEGER L, I;
L ← LENGTH(A);
I ← -1;
WHILE LENGTH(A) DO
BEGIN
T[I←I+1] ← CVASC(A);
A ← IF LENGTH(A)>5 THEN A[6 TO ∞] ELSE NULL;
END;
RETURN(L);
END;
SETBREAK(1,'12,'15,"IN");
SETFORMAT(0,0);
DOPLT ← TRUE;
OPEN(1,"DSK",0,2,0,1000,BRK,EOF);
PLOTS(I);
IF I THEN USERERR(0,0,"NO PLOTTER");
L1: PLOT(0,2560,2);
PLOT(3330,2560,1);
PLOT(3330,0,1);
PLOT(0,0,1);
SYMBOL(0,-200,6,0,T[0],PACK("DATA SETS:"));
WHERE(LTXTX, LTXTY);
L2: OUTSTR("SET # = ");
I ← CVD(INCHWL);
LOOKUP(1,"DATA"&CVS(I),J);
IF J THEN BEGIN OUTSTR("LOOKUP FAILED"&'15&'12); GO TO L2; END;
J ← INTSCAN(INP ← INPUT(1,1), BRK);
IF ¬J THEN BEGIN OUTSTR("FILE EMPTY"&'15&'12); GO TO L2; END;
SYMBOL(LTXTX, LTXTY, 6, 0, T[0], PACK(" "&CVS(I)));
WHERE(LTXTX, LTXTY);
BEGIN REAL ARRAY DAT[1:J,1:2];
FOR I←1 STEP 1 UNTIL J DO
BEGIN
INP ← INPUT(1,1);
DAT[I,1] ← REALSCAN(INP,BRK);
DAT[I,2] ← REALSCAN(INP,BRK);
END;
STRT ← 1;
DO BEGIN INTEGER X,Y;
CNT ← ABS(DAT[STRT,1])+STRT;
PLOT(X←DAT[STRT+1,1]*10.0+0.5,Y←2559.5-DAT[STRT+1,2]*10.0,3);
J ← 2;
IF STRT+2>CNT THEN
BEGIN
PLOT(X+2,Y+2,1);
PLOT(X-2,Y-2,1);
END ELSE
FOR I ← STRT+2 STEP 1 UNTIL CNT DO
BEGIN
PLOT(DAT[I,1]*10.0+0.5,2559.5-DAT[I,2]*10.0,J);
J ← 1;
END;
IF DAT[STRT,1]>0 THEN PLOT(X,Y,1);
STRT ← DAT[STRT,2];
END UNTIL ¬STRT;
END;
OUTSTR("NEW PLOT? ");
IF INCHWL="Y" THEN BEGIN PLOT(0,3000,-3); GO TO L1; END;
GO TO L2;
END;